package com.zhangtai.modules.vo;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.zhangtai.config.LongJsonDeserializer;
import com.zhangtai.config.LongJsonSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
public class TransferInfoVo {

    /**
     * id
     */
    @ApiModelProperty(value="员工id",required = true)
    @NotNull(message = "员工id不能为空")
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long oid;
    /**
     * 申请人
     */
    @ApiModelProperty(value="申请人",required = false)
    private String applyUserName;
    /**
     * 申请人工号
     */
    @ApiModelProperty(value="申请人工号",required = false)
    private String applyCode;

    /**
     * 员工工号
     */
    @NotNull(message = "员工工号不能为空")
    @ApiModelProperty(value="员工工号",required = true)
    private String userCode;
    /**
     * 调动员工姓名
     */
    @ApiModelProperty(value="员工姓名",required = false)
    private String name;
    /**
     * 调动类型，0:平调，1：升职调，2：降职调
     */
    @ApiModelProperty(value="调动类型，0:平调，1：升职调，2：降职调",required = false)
    private Integer transferType;
    /**
     * 调动方式，0:部门内部调转，1：单位内部门之间调动，2：跨单位之间调动
     */
    @NotNull(message = "调动方式不能为空")
    @ApiModelProperty(value="调动方式，0:部门内部调转，1：单位内部门之间调动，2：跨单位之间调动",required = true)
    private Integer type;
    /**
     * 调转前部门
     */
    @ApiModelProperty(value="调转前部门",required = false)
    private String beforeDepartment;
    /**
     * 调转前岗位
     */
    @ApiModelProperty(value="调转前岗位",required = false)
    private String beforeJob;
    /**
     * 拟调入部门
     */
    @ApiModelProperty(value="拟调入部门",required = false)
    private String afterDepartment;
    /**
     * 拟调入岗位
     */
    @ApiModelProperty(value="拟调入岗位",required = false)
    private String afterJob;
    /**
     * 调动前职级
     */
    @ApiModelProperty(value="调动前职级",required = false)
    private String beforeJobLevel;
    /**
     * 调动后职级
     */
    @ApiModelProperty(value="调动后职级",required = false)
    private String afterJobLevel;

    /**
     * 调动原因
     */
    @ApiModelProperty(value="调动原因",required = false)
    private String reason;

    /**
     * 调动后部门id
     */
    @ApiModelProperty(value="调动后部门id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterDepartmentId;

    /**
     * 调动前部门id
     */
    @ApiModelProperty(value="调动前部门id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeDepartmentId;
    /**
     * 调动前职位id
     */
    @ApiModelProperty(value="调动前职位id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeJobId;
    /**
     * 调动后职位id
     */
    @ApiModelProperty(value="调动后职位id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterJobId;
    /**
     * 调动后职级id
     */
    @ApiModelProperty(value="调动后职级id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterJobLevelId;




    /**
     * 调转前部门
     */
    @ApiModelProperty(value="调转前部门",required = false)
    private String beforeOrg;

    /**
     * 调转前部门id
     */
    @ApiModelProperty(value="调转前部门id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeOrgId;
    /**
     * 调转后部门
     */
    @ApiModelProperty(value="调转后部门",required = false)
    private String afterOrg;
    /**
     * 调转后部门id
     */
    @ApiModelProperty(value="调转后部门id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterOrgId;
    /**
     * 调动前职级id
     */
    @ApiModelProperty(value="调动前职级id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeJobLevelId;
    /**
     * 调动后职级类别
     */
    @ApiModelProperty(value="调动后职级类别",required = false)
    private Integer afterJobLevelType;
    /**
     * 调动前职级类别
     */
    @ApiModelProperty(value="调动前职级类别",required = false)
    private Integer beforeJobLevelType;

    /**
     * 借调开始时间
     */
    @ApiModelProperty(value="借调开始时间",required = false)
    private Date beginTransferDate;

    /**
     * 借调结束时间
     */
    @ApiModelProperty(value="借调结束时间",required = false)
    private Date endTransferDate;

    @ApiModelProperty(value="附件url",required = false)
    private List<String> url;

    /**
     * 流程状态 0:未提交，1：提交审bpm审核中，2：审核通过，3驳回
     */
    @ApiModelProperty(value="流程状态 0:未提交，1：提交审bpm审核中，2：审核通过，3驳回",required = false)
    private Integer auditStatus;

    /**
     * 考察状态 0观察中 1通过 2取消资格
     */
    @ApiModelProperty(value = "考察状态 0观察中 1通过 2取消资格")
    private Integer expeditionStatus;

    @ApiModelProperty(value="调动后体系id",required = false)
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long afterSystemId;
    @ApiModelProperty(value="调动天数")
    private String transferDays;
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeSystemId;

    private Date hireDate;
    @ApiModelProperty(value="是否需要重新签署 0：不需要 1：需要")
    private Integer isAfreshContract;

    /**
     * 原补贴结束时间
     */
    @ApiModelProperty(value="原补贴结束时间")
    private Date beforeSubsidyEnd;
    /**
     * 原补贴金额
     */
    @ApiModelProperty(value="原补贴金额")
    private BigDecimal beforeSubsidy;
    /**
     * 原补贴id
     */
    @ApiModelProperty(value="原补贴id")
    @JsonDeserialize(using = LongJsonDeserializer.class)
    @JsonSerialize(using = LongJsonSerializer.class)
    private Long beforeSubsidyId;
    /**
     * 调整后补贴
     */
    @ApiModelProperty(value="调整后补贴")
    private BigDecimal afterSubsidy;
    /**
     * 调整后补贴开始时间
     */
    @ApiModelProperty(value="调整后补贴开始时间")
    private Date afterSubsidyStart;
    /**
     * 调整后补贴结束时间
     */
    @ApiModelProperty(value="调整后补贴结束时间")
    private Date afterSubsidyEnd;
}
